﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Entidades.Reclamos;
using WebApplication.Reclamos;
using System.Text;
using System.IO;

public partial class frmconsultaHojaReclamacion : System.Web.UI.Page
{
    #region ATRIBUTOS

    protected IControllerRecHojaReclamacion _hojController;
    protected DataTable dt {
                    get{
                        if(ViewState["dt_Hoja"]==null){
                            ViewState["dt_Hoja"] = new DataTable();
                        }
                        return (DataTable)ViewState["dt_Hoja"];
                    }
                    set{
                        ViewState["dt_Hoja"] = value;
                    }
    }
    protected RecHojaReclamacion criterio;

    #endregion

    #region CONSTRUCTOR

    public frmconsultaHojaReclamacion()
    {
        _hojController = new ControllerRecHojaReclamacion();
        criterio = new RecHojaReclamacion();
    }

    #endregion

    #region EVENTOS DEL FORMULARIO

    protected void Page_Load(object sender, EventArgs e)
    {
        verMensajes();
        if (!IsPostBack) {
            txtFechaInicio.Text = "01/01/2013";
            txtFechaFin.Text = String.Format("{0:dd/MM/yyyy}", DateTime.Now); ;
            //Listar(); 
        }
    }

    protected void verMensajes() {
        String msg = (Session["hoja_rpta"] == null) ? "" : Session["hoja_rpta"].ToString();        
        switch (msg) { 
            case "1":                
                Page.ClientScript.RegisterStartupScript(this.GetType(),"MSG_SAVE", "alert('" + Constantes.MSG_SAVE + "')", true);
                Session["hoja_rpta"] = null;
                break;
            case "2":                
                Page.ClientScript.RegisterStartupScript(this.GetType(), "MSG_DELETE", "alert('" + Constantes.MSG_DELETE + "')", true);
                Session["hoja_rpta"] = null;
                break;
            case "3":
                String msg_detail = (Session["hoja_rpta_detail"] == null) ? "" : Session["hoja_rpta_detail"].ToString();            
                msg_detail = msg_detail.Replace("\"","");
                msg_detail = msg_detail.Replace("'", "");
                msg_detail = msg_detail.Replace("\n", " ");
                msg_detail = msg_detail.Replace("\r", " ");
                Page.ClientScript.RegisterStartupScript(this.GetType(), "MSG_EXCEPTION1", "$('#mensaje').html('" + msg_detail + "'); ", true);
                //Page.ClientScript.RegisterStartupScript(this.GetType(), "MSG_EXCEPTION2", "$(document).ready(function(){tb_show('mensaje', '#TB_inline?height=240&amp;width=405&amp;inlineId=hiddenModalContent&amp;modal=true', null);}", true);
                Page.ClientScript.RegisterStartupScript(this.GetType(), "MSG_EXCEPTION2", "$(document).ready(function(){tb_show('" + Constantes.MSG_EXCEPTION +"', '#TB_inline?height=240&amp;width=405&amp;inlineId=hiddenModalContent&amp;modal=true', null);}", true);

                Session["hoja_rpta"] = null;
                Session["hoja_rpta_detail"] = null;


                break;
            default: 
                break;
        }        
    }

    protected void Listar() {
        List<RecHojaReclamacion> lista = _hojController.listarHojaReclamacionPendientes(criterio);
        dt = new DataTable();
        dt.Columns.Add("Código");
        dt.Columns.Add("Local");
        dt.Columns.Add("Libro");
        dt.Columns.Add("Fecha");
        dt.Columns.Add("Cliente");
        dt.Columns.Add("Tipo");
        dt.Columns.Add("Producto");              

        DataRow dr;
        foreach (RecHojaReclamacion be in lista)
        {
            dr = dt.NewRow();
            dr[0] = be.IdHoja.ToString();
            dr[1] = be.Libro.Local.Nombre.ToString();
            dr[2] = be.Libro.Descripcion.ToString();
            dr[3] = be.FecReclamo.ToString("dd/MM/yyy");
            dr[4] = be.NomConsumidor.ToString();
            dr[5] = be.Reclamo.Descripcion.ToString();
            dr[6] = be.TipoBien.Descripcion.ToString();            
            dt.Rows.Add(dr);
        }

        gvCargos.DataSource = dt;
        gvCargos.DataBind();
    }
    protected void exportar()
    {
        List<RecHojaReclamacion> lista = _hojController.listarHojaReclamacionPendientes(criterio);

        if (lista.Count > 0)
        {
            try
            {
            String mHeader = String.Empty;
            mHeader = "<table>";
            mHeader = mHeader + "<tr>";
            mHeader = mHeader + "<td colspan=13 style='font-weight:bold;font-size: 26pt;' align='center'>HOJA DE RECLAMACIONES PENDIENTES</td>";
            mHeader = mHeader + "</tr>";
            mHeader = mHeader + "<tr>";
            mHeader = mHeader + "<td style='font-weight:bold;font-size: 10pt;'></td>";
            mHeader = mHeader + "</tr>";
            mHeader = mHeader + "</table>";

            StringBuilder mBody = new StringBuilder();
            mBody.Append("<table cellspacing='0' cellpadding='3' rules='all' bordercolor='#999999' border='1' id='dgExport' style='background-color:White;border-color:#999999;border-width:1px;border-style:None;font-family:Arial;font-size:12px;border-collapse:collapse;'>");

            mBody.Append("<tr align='Center' style='color:Black;border-color:Black;font-weight:bold;'>");
        
            mBody.Append("<td style='text-align:center;background-color:#D8D8D8;font-weight:bold' >CODIGO</td>");
            mBody.Append("<td style='text-align:LEFT;background-color:#D8D8D8';font-weight:bold' >LOCAL</td>");
            mBody.Append("<td style='text-align:LEFT;background-color:#D8D8D8';font-weight:bold' >LIBRO</td>");
            mBody.Append("<td style='text-align:LEFT;background-color:#D8D8D8';font-weight:bold' >FECHA</td>");
            mBody.Append("<td style='text-align:LEFT;background-color:#D8D8D8';font-weight:bold' >CLIENTE</td>");
            mBody.Append("<td style='text-align:LEFT;background-color:#D8D8D8';font-weight:bold' >TIPO</td>");
            mBody.Append("<td style='text-align:LEFT;background-color:#D8D8D8';font-weight:bold' >PRODUCTO</td>");
            mBody.Append("</tr>");
            foreach (RecHojaReclamacion be in lista)
            {

                mBody.Append("<tr>");
                mBody.Append("<td style='text-align:center;' >" + be.IdHoja.ToString() + "</td>");
                mBody.Append("<td style='text-align:center;'>" + be.Libro.Local.Nombre.ToString() + "</td>");
                mBody.Append("<td style='text-align:center;'>" + be.Libro.Descripcion.ToString() + "</td>");
                mBody.Append("<td style='text-align:center;'>" + be.FecReclamo.ToString("dd/MM/yyy") + "</td>");
                mBody.Append("<td style='text-align:center;'>" + be.NomConsumidor.ToString() + "</td>");
                mBody.Append("<td style='text-align:center;'>" + be.Reclamo.Descripcion.ToString() + "</td>");
                mBody.Append("<td style='text-align:center;'>" + be.TipoBien.Descripcion.ToString() + "</td>");
                mBody.Append("</tr>");

            }
            mBody.Append("</table>");
                 
            Response.Clear();
            Response.Buffer = true;
            Response.ContentType = "application/vnd.ms-excel";

            Response.AddHeader("Content-Disposition", "attachment; filename=LoadingGuide.xls;");

            Response.Charset = "UTF-8";
            Response.ContentEncoding = System.Text.Encoding.Default;
            Response.Write(mHeader + mBody);

            Response.End();

            Response.Clear();

            }
            catch (Exception exe)
            {
            }

        }
        else
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), "MSG_EMPTY", "alert('No hay registros disponibles para impresión')", true);
                
        }

    }

    #endregion

    #region EVENTOS DE BOTONES


    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        criterio = new RecHojaReclamacion();
        criterio.TipoBien.IdTipoBien = rbTipoServicio.SelectedIndex;
        criterio.NomConsumidor = txtNombres.Text;
        criterio.IdHoja = (txtNumero.Text.Trim().Equals("")) ? 0 : Int32.Parse(txtNumero.Text);
        criterio.FecReclamo =  DateTime.Parse(txtFechaInicio.Text);
        criterio.FlReclamo = (DateTime.Parse(txtFechaFin.Text) != DateTime.MinValue.Date);
        criterio.FecReclamoFin = DateTime.Parse(txtFechaFin.Text);
        criterio.FlReclamoFin = (DateTime.Parse(txtFechaFin.Text) != DateTime.MinValue.Date);
        Listar(); 
    }

    protected void btnImprimir_Click(object sender, EventArgs e)
    {
        criterio = new RecHojaReclamacion();
        criterio.TipoBien.IdTipoBien = rbTipoServicio.SelectedIndex;
        criterio.NomConsumidor = txtNombres.Text;
        criterio.NumTelefono = txtNumero.Text;
        criterio.FecReclamo = DateTime.Parse(txtFechaInicio.Text);
        criterio.FlReclamo = (DateTime.Parse(txtFechaFin.Text) != DateTime.MinValue.Date);
        criterio.FecReclamoFin = DateTime.Parse(txtFechaFin.Text);
        criterio.FlReclamoFin = (DateTime.Parse(txtFechaFin.Text) != DateTime.MinValue.Date);
        exportar();
    }

    #endregion

    #region EVENTOS DE GRID

    protected void gvCargos_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gvCargos.PageIndex = e.NewPageIndex;
        gvCargos.DataSource = dt;
        gvCargos.DataBind();
    }

    protected void verDetalle_OnClick(object sender, CommandEventArgs e)
    {
        string codigo = e.CommandName.ToString();
        Session["hoja_codigo"] = codigo;
        Session["hoja_action"] = "visualizar";
        Session["hoja_visible"] = false;
        Response.Redirect("frmHojaReclamacion.aspx");
    }

    protected void verModificar_OnClick(object sender, CommandEventArgs e)
    {
        string codigo = e.CommandName.ToString();
        Session["hoja_codigo"] = codigo;
        Session["hoja_action"] = "modificar";
        Session["hoja_visible"] = true;
        Response.Redirect("frmHojaReclamacion.aspx");
    }

    protected void verImprimir_OnClick(object sender, CommandEventArgs e)
    {
        string codigo = e.CommandName.ToString();
        Session["hoja_codigo"] = codigo;
        Session["hoja_action"] = "imprimir";
        Session["hoja_visible"] = true;
        Page.ClientScript.RegisterStartupScript(this.GetType(), "DETALLE", "window.open('frmViewHojaReclamacion.aspx','Detalle de hoja de reclamación','height=650,width=450'); ", true);
    }

    protected void verEliminar_OnClick(object sender, CommandEventArgs e)
    {
        int codigo = (e.CommandName==null)?0:Convert.ToInt32(e.CommandName.ToString());
        int resultado = 0;        
        String StrResultado = "";
        try
        {            
            resultado = _hojController.eliminarHojaReclamacion(codigo);
        }
        catch (Exception ex) {
            StrResultado = ex.Message.ToString();
        }

        if (StrResultado.Equals(""))
        {
            Session["hoja_rpta"] = 2;
            Response.Redirect("frmMtoHojaReclamacion.aspx");
        }
        else {
            Session["hoja_rpta"] = 3;
            Session["hoja_rpta_detail"] = StrResultado;
            Response.Redirect("frmMtoHojaReclamacion.aspx");
        }
    }

    #endregion

    #region EVENTOS DEL CALENDARIO

    protected void SelectFecha(object sender, EventArgs e)
    {        
        try
        {
            Calendar obj = (Calendar)sender;
            txtFechaInicio.Text = obj.SelectedDate.ToString("MM/dd/yyyy");    
        }
        catch
        {

        }
    }

    protected void SelectFechaFin(object sender, EventArgs e)
    {      
        try
        {
            Calendar obj = (Calendar)sender;
            txtFechaInicio.Text = obj.SelectedDate.ToString("MM/dd/yyyy");    
        }
        catch
        {

        }
    }

    #endregion

}